#ifndef GESTORARCHIVOCONFIGURACION_H_
#define GESTORARCHIVOCONFIGURACION_H_

#include <iostream>
#include <fstream>
#include <string>
#include <map>
#include <vector>
#include "Util.h"

/* Esta clase almacena las posiciones de las columnas de cada tabla*/
/* Y sabe si el nombre  de una columna es hecho o dimension */
/* La informacion la extrae del archivo de defincion de hechos */

class GestorArchivoConfiguracion {
private:
	//const unsigned int posColumna;
	// int es el numero de tabla, y el otro map tiene el id_columna y su posicion
	std::map<std::string, std::map<std::string, unsigned int> > posColumnasTablas;
	std::map<std::string, std::vector<std::string> > dimensiones;
	std::map<std::string, std::vector<std::string> > hechos;
	std::vector<std::string> vectorDatosTablas;	// <numero> <nombre>
	std::vector<std::string> vectorNumerosTablas;

public:
	GestorArchivoConfiguracion(const char* nombreArchivoConfiguracion);
	unsigned int getPosicionTabla(unsigned int tabla, std::string &nombreColumna);
	bool esHecho(unsigned int tabla, const std::string &valor);
	std::vector<std::string>& getHechos(std::string &numeroTabla);
	std::vector<std::string>& getDimensiones(std::string &numeroTabla);
	std::vector<std::string>& getDatosDeTablas();
	std::vector<std::string>& getNumerosDeTablas();
	~GestorArchivoConfiguracion();
};
#endif
